home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / usenet / sources / volume90 / util / st / part01 / st.c < prev   
C/C++ Source or Header  |  1990-06-04  |  2KB  |  99 lines

  1. /* ST.c : Serial Test */
  2. /* Created by John Schultz, 4/16/90 */
  3. /* Interrupt driven serial I/O testbed */
  4.  
  5. #include <stdio.h>
  6. #include <dos.h>
  7. #include "input.h"
  8.  
  9. #define CLOCK 3579545
  10.  
  11. #define MINBAUD 300        /* Change these at will */
  12. #define MAXBAUD 230000
  13.  
  14. #define BUFFSIZE 80
  15.  
  16. #define ESCAPE 69
  17.  
  18. extern void openserial(void);
  19. extern void __asm sendser(register __d0 char c);
  20. extern void __asm sendsernobuff(register __d0 char c);
  21. extern char __asm readser(void);
  22. extern short __asm checkser(void);
  23. extern char __asm rawtoascii(register __d0 char c);
  24.  
  25. extern short far baudper;
  26.  
  27. void main(int argc,char ** argv) {
  28. short i = 0;
  29. long console;
  30. long baud;
  31. char traw;
  32. short notquit = 1;
  33. char buffer[BUFFSIZE];
  34.  
  35.  
  36.   if (argc != 2) {
  37.     printf("USAGE: st <baud>\n");
  38.     exit(0);
  39.   }
  40.  
  41.   baud = atoi(argv[1]);
  42.   if (baud < MINBAUD)
  43.     baud = MINBAUD;
  44.   else if (baud > MAXBAUD)
  45.     baud = MAXBAUD;
  46.  
  47.   printf("Setting baud to %d. Press ESC to quit.\n",baud);
  48.   
  49.   baudper = (CLOCK / baud)-1;
  50.  
  51.   console = _dopen("*",MODE_OLDFILE);
  52.   if (console == -1) {
  53.     printf("Couldn't open console.\n");
  54.     exit(0);
  55.   }
  56.  
  57.   if (createti()) {
  58.     openserial();
  59.     traw = 0;
  60.     raw = 0;
  61.  
  62.     while (notquit) {
  63.       if (raw) {
  64.         traw = raw;
  65.         raw = 0;
  66.     if (traw == ESCAPE) notquit = 0;    /* ESC */
  67.         traw = rawtoascii(traw);
  68.         sendser(traw);
  69.         sendser(traw);
  70.         sendser(traw);
  71.         sendser(traw);
  72.         sendser(traw);
  73.         sendser(traw);
  74.         sendser(traw);
  75.         sendser(traw);
  76.         sendser(traw);
  77.         sendser(traw);
  78.  
  79.       }
  80.  
  81.       if (checkser())
  82.         for (i = 0;
  83.             (i < BUFFSIZE) && (checkser());
  84.             buffer[i++] = readser());
  85.       
  86.       if (i > 0) _dwrite(console,buffer,i);
  87.  
  88.       i = 0;
  89.  
  90.     } /* while notquit */
  91.  
  92.     closeserial();
  93.     deleteti();
  94.   } /* if createti */
  95.  
  96.   printf("\n");
  97.  
  98. } /* END ST.c */
  99.